import * as path from 'path';
import { MDZFile } from '../src/mdzFile';

/**
 * 示例：创建一个新的MDZ文件
 */
async function createExample() {
  console.log('创建新的MDZ文件示例');
  
  try {
    // 创建一个带有示例内容的新MDZ文件
    const mdz = new MDZFile(path.join(__dirname, '../example.mdz'));
    
    // 示例Markdown内容
    const content = `# 示例MDZ文档
    
## 这是一个示例

这是一个MDZ格式文件的示例。MDZ格式是一个Markdown的超集，
可以包含各种资源文件，如图片、视频和文档等。

- 项目1
- 项目2
- 项目3

> 引用示例

\`\`\`typescript
// 代码示例
function hello() {
  console.log("Hello, MDZ!");
}
\`\`\`
`;
    
    // 创建MDZ文件
    await mdz.create(content, {
      title: '示例MDZ文档',
      author: '示例作者',
      password: 'test123' // 可选的密码保护
    });
    
    // 获取一个示例图片路径（图片需要存在）
    // const imagePath = path.join(__dirname, '../sample-image.png');
    // await mdz.addAsset(imagePath);
    
    // 保存文件
    await mdz.save();
    
    // 关闭文件
    await mdz.close();
    
    console.log('MDZ文件已创建: example.mdz');
  } catch (error) {
    console.error('创建MDZ文件失败:', error);
  }
}

/**
 * 示例：打开并读取MDZ文件
 */
async function openExample() {
  console.log('打开MDZ文件示例');
  
  try {
    // 打开刚刚创建的MDZ文件
    const mdz = new MDZFile(path.join(__dirname, '../example.mdz'));
    
    console.log('正在打开MDZ文件...');
    // 打开文件（提供密码）
    await mdz.open('test123');
    console.log('MDZ文件打开成功！');
    
    // 读取主要内容
    const content = await mdz.getMainContent();
    console.log('文档内容:');
    console.log(content.substring(0, 200) + '...');  // 只显示部分内容
    
    // 获取元数据
    const metadata = mdz.getMetadata();
    console.log('元数据:', metadata);
    
    // 获取资源列表
    const assets = mdz.getAssets();
    console.log('资源数量:', assets.length);
    
    // 关闭文件
    await mdz.close();
  } catch (error: any) {
    console.error('打开MDZ文件失败:', error);
    if (error.stack) {
      console.error('错误堆栈:', error.stack);
    }
  }
}

/**
 * 示例：修改MDZ文件
 */
async function editExample() {
  console.log('修改MDZ文件示例');
  
  try {
    // 打开MDZ文件
    const mdz = new MDZFile(path.join(__dirname, '../example.mdz'));
    await mdz.open('test123');
    
    // 获取当前内容
    let content = await mdz.getMainContent();
    
    // 添加新内容
    content += '\n\n## 新添加的章节\n\n这是后来添加的新内容。\n';
    
    // 更新内容
    await mdz.setMainContent(content);
    
    // 更新元数据
    mdz.updateMetadata({
      title: '已更新的示例文档'
    });
    
    // 保存更改
    await mdz.save();
    
    // 关闭文件
    await mdz.close();
    
    console.log('MDZ文件已更新');
  } catch (error) {
    console.error('修改MDZ文件失败:', error);
  }
}

/**
 * 运行示例
 */
async function runExamples() {
  await createExample();
  console.log('------------------------');
  await openExample();
  console.log('------------------------');
  await editExample();
}

// 如果直接运行此文件，则执行示例
if (require.main === module) {
  runExamples().catch(console.error);
} 